/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package imc;

/**
 *
 * @author jakson
 */
public class MetodoIMC {

    private double imc = 0;
    private String condicao = null;

    public MetodoIMC() {
    }

    public MetodoIMC(String condicao, double imc) {
        this.condicao = condicao;
        this.imc = imc;
    }

    public void fazerCalculo(double peso, double altura) {

        if (peso <= 0 || Double.isNaN(peso) || peso == ' ') {
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        } else if (altura <= 0 || altura > 3 || Double.isNaN(altura)) {
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
        } else {
            this.imc = peso / (altura * altura);
        }

    }

    public void classificar(char sexo) {
        if (sexo != 'M' && sexo != 'F') {
            throw new RuntimeException("Falha: É necessário informar o sexo (M, F)");
        } else {
            if (sexo == 'F') {

                if (this.imc < 19.1) {
                    this.condicao = "Abaixo do peso";
                }
                if (this.imc >= 19.1 && this.imc < 25.8) {
                    this.condicao = "No peso normal";
                }
                if (this.imc >= 25.8 && this.imc < 27.3) {
                    this.condicao = "Marginalmente acima do peso";
                }
                if (this.imc >= 27.3 && this.imc <= 32.3) {
                    this.condicao = "Acima do peso ideal";
                }
                if (this.imc > 32.3) {
                    this.condicao = "Obeso";
                }
            } else {
                if (this.imc < 20.7) {
                    this.condicao = "Abaixo do peso";
                }
                if (this.imc >= 20.7 && this.imc < 26.4) {
                    this.condicao = "No peso normal";
                }
                if (this.imc >= 26.4 && this.imc < 27.8) {
                    this.condicao = "Marginalmente acima do peso";
                }
                if (this.imc >= 27.8 && this.imc <= 31.1) {
                    this.condicao = "Acima do peso ideal";
                }
                if (this.imc > 31.1) {
                    this.condicao = "Obeso";
                }
            }
        }
    }

    public String getCondicao() {
        return condicao;
    }

    public double getImc() {
        return imc;
    }
}
